package test.msm;

import java.util.HashMap;
import java.util.Map;

import hyl.core.MyFun;
import hyl.core.db.MyDB;
import hyl.ext.base.MySession;
import hyl.ext.base.SessionFactory;
import hyl.ext.web.ms.ABOpen;
import hyl.ext.web.ms.BInfo;

import hyl.ext.web.ms.TMsA;
import hyl.ext.web.ms.TMsB;

// key 签名模式
public class testsso3 {
	public static void main(String[] args) {
		testsso3 tt2 = new testsso3();
		// tt2.

	}

//	PublicKey pbk;
//	PrivateKey pik;
//	String 签钥B = "123456";
//	String 公钥;
//	String 私钥;
//	String appidB = "123";
//	ExToken tokenA = null;
//	SsInfo sInfob = new SsInfo();
	// SsInfo sInfoa = new SsInfo();
//	ExTokenFactory listeta = new ExTokenFactory(60000);// 60s过期
//	ExTokenFactory listetb = new ExTokenFactory(10000);// 10s过期
	Map<String, String> _apps = new HashMap<>();
	SessionFactory _sf;
	TMsA _ma = new TMsA();
	TMsB _mb = new TMsB();

	public testsso3() {
		_sf = SessionFactory.getInstance();
		_apps.put("123", "123456");
		_ma.init();
		_ma.setDB("db1");

		// f1_1_b();
	}

	/*
	 * 
	 * 
	 */
	public void f1_1_b(MySession sessionb) {
		String appidB = "123";
		String tempkey = MyFun.getMsDesc();
		String 明文 = MyFun.join2(",", appidB, sessionb.userIdToStr(), sessionb.getTokenId(), tempkey, sessionb.getIp());
		BInfo mi = _mb._binfo;
		String mm = mi.aes加密64(明文);
		MyFun.print("f1_1_b()", "\r\n", 明文, "\r\n", mm, "\r\n", tempkey);
		f1_2_a(mm, tempkey);
	}

	/*
	 * 
	 * 
	 */
	public void f1_2_a(String 密文, String tempkey) {
		System.out.println("f1_2_a()");

		String mm = _mb._binfo.aes解密64(密文);
		MyFun.print("mm", mm);
		String[] mms = mm.split(",");
		String appid_b = mms[0];
		String userid_b = mms[1];
		String session_b = mms[2];
		String key = mms[3];
		String userip = mms[4];

		// 如果令牌不对,说明密文不对 ,说明来自的b系统 不正确 阻止登录
		if (MyFun.isBlank(key) || MyFun.isBlank(tempkey) || !tempkey.equals(key))
			return;

		// 如果 appid 为空或者未在中心注册 ,阻止登录,必须先注册
		if (MyFun.isBlank(appid_b) || MyFun.isBlank(userid_b) || !_ma.containApp(appid_b))
			return;

		// 如果用户 未在中心注册 阻止登录
		ABOpen openb = _ma.getABOpen2(appid_b, MyFun.str2int(userid_b) );
		if (openb == null) {
			// 转到注册页面
			 reg_open();
		} else {
			// 转到首页
			f1_3_a_default();
		}

		// 创建单点登录的会话
		//	MySession sess=	SessionFactory.getSsoSession(userid_b,userip);
		//	sess.start();

		// f1_3_a_default(sess.getTokenId());
	}

	// 定向到b指定页
	public void f1_3_a_default() {
		// String sessionida
	}

	public void reg_open() {
	
	}
}
